package com.huluspace.learnhub.security;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;

public record CustomUserDetails(Long id,
                                String username,
                                String password,
                                Collection<? extends GrantedAuthority> authorities) implements UserDetails {
  // 在JWT校验流程中可设为 ""

  @Override
  public Collection<? extends GrantedAuthority> getAuthorities() {
    return authorities;
  }

  @Override
  public String getPassword() {
    return password;
  }

  @Override
  public String getUsername() {
    return username;
  }

  @Override
  public boolean isAccountNonExpired() {
    return true;
  }

  @Override
  public boolean isAccountNonLocked() {
    return true;
  }

  @Override
  public boolean isCredentialsNonExpired() {
    return true;
  }

  @Override
  public boolean isEnabled() {
    return true;
  }

  @Override
  public String toString() {
    return "CustomUserDetails{" +
        "id=" + id +
        ", username='" + username + '\'' +
        ", authorities=" + authorities.stream()
        .map(GrantedAuthority::getAuthority)
        .toList() +
        '}';
  }
}
